package VUTHANHPHUC_HOMEWORK_OOP;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JComboBox;
import java.awt.event.ActionListener;
import java.nio.channels.SelectableChannel;
import java.awt.event.ActionEvent;

public class CaculatorView extends JFrame {

	private JPanel contentPane;
	private JTextField txtA;
	private JTextField txtB;
	private JTextField txtKQ;
	private JComboBox pheptoan;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CaculatorView frame = new CaculatorView();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CaculatorView() {
		setTitle("Caculator");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 387, 338);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblNewLabel = new JLabel("Nhập vào số a");
		lblNewLabel.setBounds(30, 59, 89, 14);
		contentPane.add(lblNewLabel);

		JLabel lblNhpVoS = new JLabel("Nhập vào số b");
		lblNhpVoS.setBounds(30, 94, 89, 14);
		contentPane.add(lblNhpVoS);

		JLabel lblChnPhpTon = new JLabel("Chọn phép toán");
		lblChnPhpTon.setBounds(30, 130, 89, 14);
		contentPane.add(lblChnPhpTon);

		JLabel lblNewLabel_2 = new JLabel("Kết quả");
		lblNewLabel_2.setBounds(30, 191, 89, 14);
		contentPane.add(lblNewLabel_2);

		JLabel lblNewLabel_1 = new JLabel("Sử dụng If...Else trong xử lý tính toán");
		lblNewLabel_1.setBounds(10, 11, 218, 14);
		contentPane.add(lblNewLabel_1);

		JButton Cal = new JButton("Tính toán");
		Cal.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				if (txtA.getText().isEmpty()) {
					JOptionPane.showMessageDialog(getParent(), "Yêu cầu nhập số a", "lỗi", JOptionPane.ERROR_MESSAGE);
				} else if (txtB.getText().isEmpty()) {
					JOptionPane.showMessageDialog(getParent(), "Yêu cầu nhập số b", "lỗi", JOptionPane.ERROR_MESSAGE);
				} else {
					Caculator objCal = new Caculator();
					double a = Double.parseDouble(txtA.getText());
					double b = Double.parseDouble(txtB.getText());
					/*
					 * mày nhập 2 số a và b xong mà không truyền vào đối tượng
					 * objCal thì nó lấy cái j mà tính toán với cả chọn phép
					 * toán cũng không truyền vào đối tượng objCal thì models vs
					 * controllers lấy gì kiểm tra để tính toán
					 */
					objCal.setA(a);
					objCal.setB(b);
					String optType = pheptoan.getSelectedItem().toString();
					objCal.setOpt(optType);
					CalculatorControllers objC = new CalculatorControllers();

					// JComboBox cboPhepToan = null; ngu người cái này null thì
					// làm sao mà nó gọi phương thức được
					/*
					 * combo box của mày là pheptoan thì khi thao tác với nó
					 * phải gọi đúng tên của nó là pheptoan chứ mày tạo ra 1 đối
					 * tượng combox khác rồi cho null thì mày thao tác kiểu j
					 */
					// String optType =cboPhepToan.getSelectedItem().toString();
					if (optType.equals("Chia")) {
						if (a == 0 && b == 0) {
							txtKQ.setText("Result of function is underfined");
						} else if (a != 0 && b == 0) {
							txtKQ.setText("Cannot divide by zero");
						} else {
							txtKQ.setText("" + objC.Calculator(objCal));
						}
					} else {
						txtKQ.setText("" + objC.Calculator(objCal));
					}
				}
			}
		});
		Cal.setBounds(217, 248, 89, 23);
		contentPane.add(Cal);

		txtA = new JTextField();
		txtA.setBounds(128, 56, 178, 20);
		contentPane.add(txtA);
		txtA.setColumns(10);
		txtB = new JTextField();
		txtB.setColumns(10);
		txtB.setBounds(128, 91, 178, 20);
		contentPane.add(txtB);

		txtKQ = new JTextField();
		txtKQ.setColumns(10);
		txtKQ.setBounds(128, 170, 178, 57);
		txtKQ.setEditable(false);// ô kết quả thì để dạng không cho nhập dữ liệu
		contentPane.add(txtKQ);

		pheptoan = new JComboBox();
		pheptoan.setModel(new DefaultComboBoxModel(new String[] { "Cộng", "Trừ", "Nhân", "Chia" }));
		pheptoan.setBounds(129, 127, 177, 20);
		contentPane.add(pheptoan);
	}
}
